home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Demos
/
A.D. Software
/
OOFILE
/
Buildable, limited OOFILE
/
source
/
core
/
oof4.hpp
< prev
next >
Wrap
Text File
|
1996-03-24
|
15KB
|
447 lines
#ifndef H_OOF4
#define H_OOF4
// COPYRIGHT 1994 A.D. Software, All rights reserved
// OOFILE database numeric field-related classes
// see also oof3.hpp
#include "oof3.hpp"
class dbReal;
class dbShort;
class dbLong;
class dbQueryLiteral;
class dbNumericField : public dbField {
protected:
dbNumericField() {};
public:
dbNumericField(const OOF_IndexOptions);
dbNumericField(const char *fieldName);
dbNumericField(const char *fieldName, const OOF_IndexOptions);
dbNumericField(dbField::FieldIsStandaloneT k) : dbField(k) {};
// use default copy ctor
virtual ~dbNumericField() {};
// search factories
dbQueryBinary operator==(long) const;
dbQueryBinary operator<(long) const;
dbQueryBinary operator<=(long) const;
dbQueryBinary operator>=(long) const;
dbQueryBinary operator>(long) const;
dbQueryBinary operator!=(long) const;
dbQueryTrinary between(long, long) const;
dbQueryTrinary outside(long, long) const;
void operator+=(long);
void operator-=(long);
void operator*=(long);
void operator/=(long);
void operator+=(double);
void operator-=(double);
void operator*=(double);
void operator/=(double);
protected:
static void CheckRange(double d, long minL, long maxL, const char* file, int line);
static void CheckRange(long l, long minL, long maxL, const char* file, int line);
static void CheckRange(unsigned long l, unsigned long max, const char* file, int line);
virtual dbQueryLiteral* MakeQueryLiteral(long) const;
};
class dbShort : public dbNumericField {
public:
dbShort() {};
dbShort(const OOF_IndexOptions);
dbShort(const char *fieldName);
dbShort(const char *fieldName, const OOF_IndexOptions);
dbShort(dbField::FieldIsStandaloneT k) : dbNumericField(k) {};
// use default copy ctor
virtual ~dbShort() {};
// reflective operators
virtual OOF_fieldTypes fieldType() const;
virtual unsigned long fieldLen() const;
// data access
virtual void setString(const char*);
dbShort& operator=(short);
dbShort& operator=(long);
dbShort& operator=(int);
dbShort& operator=(const dbShort&); // value copy
dbShort& operator=(double);
operator short() const;
virtual void extract(ostream& os) const;
virtual bool insert(istream&, char fieldSep, char recSep);
virtual void copyValueFrom(const dbField*);
virtual void generateTestData(const char* ignored, unsigned long ignoredLen);
protected:
virtual dbQueryLiteral* MakeQueryLiteral(long) const;
};
class dbUshort : public dbNumericField {
public:
dbUshort() {};
dbUshort(const OOF_IndexOptions);
dbUshort(const char *fieldName);
dbUshort(const char *fieldName, const OOF_IndexOptions);
dbUshort(dbField::FieldIsStandaloneT k) : dbNumericField(k) {};
// use default copy ctor
virtual ~dbUshort() {};
// reflective operators
virtual OOF_fieldTypes fieldType() const;
virtual unsigned long fieldLen() const;
// data access
virtual void setString(const char*);
dbUshort& operator=(unsigned short);
dbUshort& operator=(long);
dbUshort& operator=(int);
dbUshort& operator=(const dbUshort&); // value copy
dbUshort& operator=(double);
operator unsigned short() const;
virtual void extract(ostream& os) const;
virtual bool insert(istream&, char fieldSep, char recSep);
virtual void copyValueFrom(const dbField*);
virtual void generateTestData(const char* ignored, unsigned long ignoredLen);
protected:
virtual dbQueryLiteral* MakeQueryLiteral(long) const;
};
class dbLong : public dbNumericField {
public:
dbLong() {};
dbLong(const OOF_IndexOptions);
dbLong(const char *fieldName);
dbLong(const char *fieldName, const OOF_IndexOptions);
dbLong(dbField::FieldIsStandaloneT k) : dbNumericField(k) {};
// use default copy ctor
virtual ~dbLong() {};
// reflective operators
virtual OOF_fieldTypes fieldType() const;
virtual unsigned long fieldLen() const;
// data access
virtual void setString(const char*);
dbLong& operator=(long);
dbLong& operator=(int);
dbLong& operator=(const dbLong&); // value copy
dbLong& operator=(double);
operator long() const;
virtual void extract(ostream& os) const;
virtual bool insert(istream&, char fieldSep, char recSep);
virtual void copyValueFrom(const dbField*);
virtual void generateTestData(const char* ignored, unsigned long ignoredLen);
};
class dbUlong : public dbNumericField {
public:
dbUlong() {};
dbUlong(const OOF_IndexOptions);
dbUlong(const char *fieldName);
dbUlong(const char *fieldName, const OOF_IndexOptions);
dbUlong(dbField::FieldIsStandaloneT k) : dbNumericField(k) {};
// use default copy ctor
virtual ~dbUlong() {};
dbQueryBinary operator==(unsigned long) const;
// reflective operators
virtual OOF_fieldTypes fieldType() const;
virtual unsigned long fieldLen() const;
// data access
virtual void setString(const char*);
dbUlong& operator=(unsigned long);
dbUlong& operator=(unsigned int);
dbUlong& operator=(const dbUlong&); // value copy
dbUlong& operator=(double);
operator unsigned long() const;
virtual void extract(ostream& os) const;
virtual bool insert(istream&, char fieldSep, char recSep);
virtual void copyValueFrom(const dbField*);
virtual void generateTestData(const char* ignored, unsigned long ignoredLen);
virtual dbQueryLiteral* MakeQueryLiteral(long n) const;
dbQueryLiteral* MakeQueryLiteral(unsigned long n) const;
};
class dbReal : public dbNumericField {
public:
dbReal();
dbReal(const OOF_IndexOptions indexOptions);
dbReal(const char *fieldName);
dbReal(const char *fieldName, const OOF_IndexOptions indexOptions);
dbReal(const dbReal&);
dbReal(dbField::FieldIsStandaloneT k) : dbNumericField(k) {};
virtual ~dbReal();
virtual void deleteStandaloneStorage();
void CompleteInit();
// reflective operators
virtual OOF_fieldTypes fieldType() const;
virtual unsigned long fieldLen() const;
// search factories
dbQueryBinary operator==(double) const;
dbQueryBinary operator<(double) const;
dbQueryBinary operator<=(double) const;
dbQueryBinary operator>=(double) const;
dbQueryBinary operator>(double) const;
dbQueryBinary operator!=(double) const;
dbQueryTrinary between(double, double) const;
dbQueryTrinary outside(double, double) const;
// data access
virtual void setString(const char*);
dbReal& operator=(double);
dbReal& operator=(const dbReal&); // value copy
operator double() const;
virtual void extract(ostream& os) const;
virtual bool insert(istream&, char fieldSep, char recSep);
virtual void copyValueFrom(const dbField*);
virtual void generateTestData(const char* ignored, unsigned long ignoredLen);
protected:
virtual dbQueryLiteral* MakeQueryLiteral(long) const;
};
class dbDate : public dbNumericField {
public:
enum dateFieldOrder {orderYMD, orderDMY, orderMDY};
dbDate() {};
dbDate(const OOF_IndexOptions indexOptions);
dbDate(const char *fieldName);
dbDate(const char *fieldName, const OOF_IndexOptions indexOptions);
dbDate(const dbDate& rhs);
dbDate(dbField::FieldIsStandaloneT k) : dbNumericField(k) {};
virtual ~dbDate();
// arithmetic operators
dbDate& operator++ ();
dbDate& operator-- ();
dbDate& operator+= (int);
dbDate& operator-= (int);
// operators returning concrete dates
dbDate operator-(const dbDate&) const;
dbDate operator-(long) const;
dbDate operator+(const dbDate&) const;
dbDate operator+(long) const;
// search factories
dbQueryBinary operator==(const char*) const;
dbQueryBinary operator<(const char*) const;
dbQueryBinary operator<=(const char*) const;
dbQueryBinary operator>=(const char*) const;
dbQueryBinary operator>(const char*) const;
dbQueryBinary operator!=(const char*) const;
dbQueryTrinary between(const char*, const char*) const;
dbQueryTrinary outside(const char*, const char*) const;
dbQueryBinary operator==(const dbDate&) const;
dbQueryBinary operator<(const dbDate&) const;
dbQueryBinary operator<=(const dbDate&) const;
dbQueryBinary operator>=(const dbDate&) const;
dbQueryBinary operator>(const dbDate&) const;
dbQueryBinary operator!=(const dbDate&) const;
dbQueryTrinary between(const dbDate&, const dbDate&) const;
dbQueryTrinary outside(const dbDate&, const dbDate&) const;
// reflective operators
virtual unsigned long fieldLen() const;
virtual OOF_fieldTypes fieldType() const;
virtual OOF_fieldTypes nativeType() const;
// data access
// getters
unsigned short day() const;
unsigned short month() const;
unsigned short year() const;
operator unsigned long() const;
#ifdef _Macintosh
void asStr255(Str255 s) const;
#endif
virtual void extract(ostream& os) const; // as "YYYY/MM/DD"
unsigned long daynum() const;
// setters
virtual void copyValueFrom(const dbField*);
virtual void setString(const char*);
#ifdef _Macintosh
void setStr255(const Str255 s);
#endif
dbDate& operator=(const char* str); // "YYYY MM DD"
dbDate& operator=(const dbDate& rhs);
void setDate(unsigned long);
virtual bool insert(istream&, char fieldSep, char recSep);
void setDate(unsigned short year, unsigned short month, unsigned short day);
void getDate(unsigned short& year, unsigned short& month, unsigned short& day) const;
void setDateToCurrentDate();
void setDaynum(unsigned long);
virtual void generateTestData(const char* ignored, unsigned long ignoredLen);
public:
static dateFieldOrder sDefaultDateOrder;
static void long2ymd(unsigned long binaryDate, unsigned short&, unsigned short&, unsigned short&);
static bool istream2ymd(istream& is, unsigned short&, unsigned short&, unsigned short&, dateFieldOrder theOrder=dbDate::sDefaultDateOrder);
static bool istream2ymd(istream& is, unsigned short&, unsigned short&, unsigned short&, char fieldSep, char recordSep, dateFieldOrder theOrder=dbDate::sDefaultDateOrder);
static bool chars2ymd(const char*, unsigned short&, unsigned short&, unsigned short&, dateFieldOrder theOrder=dbDate::sDefaultDateOrder);
static void daynum2ymd(unsigned long, unsigned short&,unsigned short&,unsigned short&);
static unsigned long chars2Long(const char*, dateFieldOrder theOrder=dbDate::sDefaultDateOrder);
static unsigned long ymd2Long(unsigned short, unsigned short, unsigned short);
static unsigned long ymd2daynum(unsigned short,unsigned short,unsigned short);
static ostream& ymd2Stream(unsigned short, unsigned short, unsigned short, ostream& os);
static unsigned short istream2month(istream&);
static unsigned short chars2month (const char *);
static bool checkDate(unsigned short year, unsigned short month, unsigned short day);
// current date
static dbDate currentDate();
static void currentDate2ymd(unsigned short&, unsigned short&, unsigned short&);
static ostream& today(ostream& os);
static unsigned short currentCentury();
static unsigned short currentDay();
static unsigned short currentMonth();
static unsigned short currentYear();
};
long operator- (const dbDate&, const dbDate&);
// STANDALONE FIELD TYPES
class oofChar : public dbChar
{
public:
oofChar(long fieldWidth = 80) : dbChar(dbField::eFieldIsStandalone, fieldWidth) {};
oofChar(const dbChar& rhs) : dbChar(dbField::eFieldIsStandalone, rhs.fieldLen()) { dbChar::operator=(rhs); };
virtual ~oofChar() {};
oofChar& operator=(const oofChar& rhs) { dbChar::operator=(rhs); return *this; };
oofChar& operator=(const dbChar& rhs) { dbChar::operator=(rhs); return *this; };
};
class oofText : public dbText
{
public:
oofText() : dbText(dbField::eFieldIsStandalone) {};
oofText(const dbText& rhs) : dbText(dbField::eFieldIsStandalone) { dbText::operator=(rhs); };
virtual ~oofText() {};
oofText& operator=(const oofText& rhs) { dbText::operator=(rhs); return *this; };
oofText& operator=(const dbText& rhs) { dbText::operator=(rhs); return *this; };
};
class oofBLOB : public dbBLOB
{
public:
oofBLOB() : dbBLOB(dbField::eFieldIsStandalone) {};
oofBLOB(const dbBLOB& rhs) : dbBLOB(dbField::eFieldIsStandalone) { dbBLOB::operator=(rhs); };
virtual ~oofBLOB() {};
oofBLOB& operator=(const oofBLOB& rhs) { dbBLOB::operator=(rhs); return *this; };
oofBLOB& operator=(const dbBLOB& rhs) { dbBLOB::operator=(rhs); return *this; };
};
class oofDate : public dbDate
{
public:
oofDate() : dbDate(dbField::eFieldIsStandalone) {};
oofDate(const dbDate& rhs) : dbDate(dbField::eFieldIsStandalone) { dbDate::operator=(rhs); };
virtual ~oofDate() {};
oofDate& operator=(const oofDate& rhs) { dbDate::operator=(rhs); return *this; };
oofDate& operator=(const dbDate& rhs) { dbDate::operator=(rhs); return *this; };
};
class oofLong : public dbLong
{
public:
oofLong() : dbLong(dbField::eFieldIsStandalone) {};
oofLong(const dbLong& rhs) : dbLong(dbField::eFieldIsStandalone) { dbLong::operator=(rhs); };
virtual ~oofLong() {};
oofLong& operator=(const oofLong& rhs) { dbLong::operator=(rhs); return *this; };
oofLong& operator=(const dbLong& rhs) { dbLong::operator=(rhs); return *this; };
};
class oofUlong : public dbUlong
{
public:
oofUlong() : dbUlong(dbField::eFieldIsStandalone) {};
oofUlong(const dbUlong& rhs) : dbUlong(dbField::eFieldIsStandalone) { dbUlong::operator=(rhs); };
virtual ~oofUlong() {};
oofUlong& operator=(const oofUlong& rhs) { dbUlong::operator=(rhs); return *this; };
oofUlong& operator=(const dbUlong& rhs) { dbUlong::operator=(rhs); return *this; };
};
class oofShort : public dbShort
{
public:
oofShort() : dbShort(dbField::eFieldIsStandalone) {};
oofShort(const dbShort& rhs) : dbShort(dbField::eFieldIsStandalone) { dbShort::operator=(rhs); };
virtual ~oofShort() {};
oofShort& operator=(const oofShort& rhs) { dbShort::operator=(rhs); return *this; };
oofShort& operator=(const dbShort& rhs) { dbShort::operator=(rhs); return *this; };
};
class oofUshort : public dbUshort
{
public:
oofUshort() : dbUshort(dbField::eFieldIsStandalone) {};
oofUshort(const dbUshort& rhs) : dbUshort(dbField::eFieldIsStandalone) { dbUshort::operator=(rhs); };
virtual ~oofUshort() {};
oofUshort& operator=(const oofUshort& rhs) { dbUshort::operator=(rhs); return *this; };
oofUshort& operator=(const dbUshort& rhs) { dbUshort::operator=(rhs); return *this; };
};
class oofReal : public dbReal
{
public:
oofReal() : dbReal(dbField::eFieldIsStandalone) {};
oofReal(const dbReal& rhs) : dbReal(dbField::eFieldIsStandalone) { dbReal::operator=(rhs); };
virtual ~oofReal() {};
oofReal& operator=(const oofReal& rhs) { dbReal::operator=(rhs); return *this; };
oofReal& operator=(const dbReal& rhs) { dbReal::operator=(rhs); return *this; };
};
// include inline definitions
#include "oof4.inl"
#endif